// 方法重载
class Hello {
	public void hello() {
		System.out.println("Hello,world!");
	}

	public void hello(String name) {
		System.out.println("Hello," + name + "!");
	}

	public void hello(String name, int age) {
		if (age < 18) {
			System.out.println("Hi," + name + "!");
		} else {
			System.out.println("Hello," + name + "!");
		}
	}
}
//这种方法名相同，但各自的参数不同，称为'方法重载（Overload）'。
//(注意：方法重载的返回值类型通常都是相同的。)


/*
方法重载的目的是，功能类似的方法使用同一名字，更容易记住，因此，调用起来更简单。

举个例子，String类提供了多个重载方法indexOf()，可以查找子串：
	1.int indexOf(int ch)：根据字符的Unicode码查找；
	2.int indexOf(String str)：根据字符串查找；
	3.int indexOf(int ch, int fromIndex)：根据字符查找，但指定起始位置；
	4.int indexOf(String str, int fromIndex)根据字符串查找，但指定起始位置。

*/

public class Main {
	public static void main(String[] args) {
		String s = "Test string";

		int n1 = s.indexOf(123); //Unicode
		int ns = s.indexOf('st'); //str
		int n3 = s.indexOf('st',4); //str,index

		System.out.println(n1);
		System.out.println(n2);
		System.out.println(n3);
	}
}



// 练习
public class Main {
	public static void main(String[] args) {
		Person ming = new Person();
		Person hong = new Person();

		ming.setName("Xiao Ming");
		//TODO:给Person增加重载方法setName(String,String);
		hong.setName("Xiao","Hong");

		System.out.println(ming.getName());
		System.out.println(hong.getNaem());
	}
}

class Person {
	private String name;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public void setName(String name1, String name2) {
		this.name = name1 + name2;
	}

	public void setName(String... name) {
		for (String n : name) {
			this.name += n;
		}
	}
}
